#include <STC89C5xRC.H>

typedef unsigned char u8;
typedef unsigned int u16;
// 假设是共阴极
static u8 s_digit_codes[10] = {
    0x3F, //0
    0x06, // 1
    0x5B, // 2
    0x4F, // 3
    0x66, // 4
    0x6D, // 5
    0x7D, // 6
    0x07, // 7
    0x7F, // 8
    0x6F  // 9
};
/**
 * @brief 内部方法，让数码管某一位置显示特定数字
 * @param dig 片选 【0-7】
 */
void DigitialTube_DisplaySingle(u8 dig, u8 num) {
    // P0 段为段选信号，控制数码管显示内容 ， P13,14,15为片选，控制哪一位数码管发光
    P0 = 0;
    P1 &= 0xC7;  // 1100 0111
    dig <<= 3;
    P1 |= dig;
    P0 = num;
}
void main() {
    // DiG1 , 2, 3, 4,  | 5, 6, 7, 8
    DigitialTube_DisplaySingle(5-1, s_digit_codes[1]);
    while(1);
}